package writtenTraining.day1;

import java.util.*;

/**
 * day1: (1)遍历判断：BC153 [NOIP2010]数字统计
 */

public class Main {
    public static void main(String[] args) {
        // 输入
        Scanner in = new Scanner(System.in);
        int L = in.nextInt(), R = in.nextInt();
        
        // 遍历查找
        int ret = 0;
        for(int i = L ; i <= R; i++) {
            int num = i;
            while(num != 0) {
                if(num % 10 == 2) {
                    ret++;
                }
                num /= 10;
            }
        }

        // 输出
       System.out.println(ret);
    }
}

/**
 * day1: (2) 哈希查找：NC313 两个数组的交集
 */


 class Solution {

    public ArrayList<Integer> intersection (ArrayList<Integer> nums1, ArrayList<Integer> nums2) {
        //  哈希查找

        // 准备工作
        int[] hash = new int[1001];
        ArrayList<Integer> ret = new ArrayList<>();

        // 先查找num1
        for(int num : nums1) {
            hash[num]++;
        }
        // 然后查找num2
        for(int num: nums2) {
            if(hash[num] > 0) {
                ret.add(num);
                // 注意这里加入之后一定要标记已经加入过了
                hash[num] = 0;
            }
        }


        return ret;
    }
}

/**
 * day1: （3）栈的先入后出： AB5 点击消除
 */



 class Main1 {
    public static void main(String[] args) {
        // 栈的先入后出思路

        // 输入
        Scanner in = new Scanner(System.in);
        char[] str = in.nextLine().toCharArray();

        // 准备工作
        Stack<Character> stack = new Stack<>();
        stack.push(str[0]);

        for (int i = 1; i < str.length; i++) {
            // 如果等于栈顶元素
            if (!stack.isEmpty() && stack.peek() == str[i]) {
                // 出栈
                stack.pop();
            } else {
                // 不相等就入栈
                stack.push(str[i]);
            }
        }

        // 需要特判一下
        if (stack.isEmpty()) {
            System.out.print("0");
        } else {
            // 由于先入后厨，顺序可能相反,用一个临时栈来转化
            Stack<Character> tmpStack = new Stack<>();
            while (!stack.isEmpty()) {
                tmpStack.push(stack.pop());
            }

            // 输出
            while (!tmpStack.isEmpty()) {
                System.out.print(tmpStack.pop());
            }
        }



    }
}


/**
 * day1:(3)字符串的加入与尾删思路:AB5 点击消除
 */




 class Main2 {
    public static void main(String[] args) {
        // 字符串的加入与尾删思路

        // 输入
        Scanner in = new Scanner(System.in);
        char[] str = in.nextLine().toCharArray();

        // 准备工作
        StringBuilder s = new StringBuilder();
        s.append(" ");
        for(int i = 0; i < str.length; i++) {
            if(s.charAt(s.length()-1) == str[i]) {
                // 如果相等就尾删
                s.deleteCharAt(s.length()-1);
            } else {
                // 不相等就加入
                s.append(str[i]);
            }
        }

        // 特殊情况判断
        // 最终输出结果 1~length - 1 的结果
        System.out.println( s.length() == 1 ?
                "0":s.substring(1,s.length()).toString());


    }
}